package com.zhongwang.business.module.taskManage.controller;

import com.zhongwang.business.base.BaseController;
import com.zhongwang.business.common.JsonResult;
import com.zhongwang.business.module.basic.model.BusinessGroupModel;
import com.zhongwang.business.module.basic.service.BusinessGroupService;
import com.zhongwang.business.module.taskManage.model.TaskDistributeModel;
import com.zhongwang.business.module.taskManage.model.TaskFormRelationModel;
import com.zhongwang.business.module.taskManage.model.TaskModel;
import com.zhongwang.business.module.taskManage.model.UnassignedTaskModel;
import com.zhongwang.business.module.taskManage.service.TaskDistributeService;
import com.zhongwang.business.module.taskManage.service.TaskFormRelationService;
import com.zhongwang.business.module.taskManage.service.TaskService;
import com.zhongwang.business.module.taskManage.service.UnassignedTaskService;
import com.zhongwang.business.util.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import static java.lang.Integer.parseInt;

/**
 * @InterfaceName： UnassignedTaskDao
 * @Description： 获取待下达的项目信息列表
 * @Author： 闫薇
 * @date： 2020/8/20 13:18
 * @version： V1.0
 **/
@Controller
@RequestMapping("/taskApply")
public class TaskApplyController extends BaseController {
    @Autowired
    private UnassignedTaskService unassignedTaskService;
    @Autowired
    private BusinessGroupService businessGroupService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private TaskDistributeService taskDistributeService;
    @Autowired
    private TaskFormRelationService taskFormRelationService;
//    @GetMapping("/taskApply")
    public String linkTaskApply(){
        return "/taskManage/apply/taskApply";
    }


    /**
     * 待下达列表页面
     * @return
     */
    @GetMapping
    public String linkTaskRelease(Model model) {

        /*这部分显示页面上的checkBox列表的值*/
//        BusinessGroupModel cbModel=new BusinessGroupModel();
//        cbModel.setGtype(2);
//        model.addAttribute("chengbenlist", businessGroupService.selectBusinessGroupList(cbModel));
//
//        BusinessGroupModel htModel=new BusinessGroupModel();
//        htModel.setGtype(1);
//        model.addAttribute("hetonglist", businessGroupService.selectBusinessGroupList(htModel));

        model.addAttribute("userlist", businessGroupService.selectUserList());

        return "taskManage/release/taskList";
    }
    /**
     * 待下达项目列表
     * @param model
     * @return
     */
    @ResponseBody
    @PostMapping("/list")
    public JsonResult selectList(UnassignedTaskModel model) {
        JsonResult jsonResult=new JsonResult();
        startPage();
        return jsonResult(unassignedTaskService.selectUnassignedTaskList(model));
    }

//    /**
//     * 点击申请，执行添加或者修改
//     * @param model
//     * @return
//     */
//    @PostMapping("/apply")
//    @ResponseBody
//    //@RequiresPermissions({"drive:toolsb:add"})
//    public JsonResult insert(UnassignedTaskModel model){
//        JsonResult jsonResult = new JsonResult();
//        Integer flg=0;
//        //首先根据id 查询是否存在
//        //List<UnassignedTaskModel> list=unassignedTaskService.selectIsExistsTask(model);
//        if(model.getTid()!=null && model.getTid() != 0){
//            //存在就是更新字段
//            //将项目号对应的数据id，作为修改的主键。
//            model.setId(model.getTid());
//            //项目看板的主键id
//            model.setFkId(model.getId());
//            model.setCreateUser(ShiroUtils.getUser().getName());
//            //标记是否加急
//            flg=unassignedTaskService.updUnassignedTask(model);
//        }else {
//            //不存在就是添加
//            //看板的主键id给商务任务的外键
//            model.setKind(0);
//            model.setIsPoint(0);
//            model.setIsExpedited(0);
//            model.setIsApply(0);
//            model.setIsDelete(0);
//            model.setFkId(model.getId());
//            model.setCreateUser(ShiroUtils.getUser().getName());
//            flg=unassignedTaskService.addUnassignedTask(model);
//        }
//        if(flg==1){
//            jsonResult.setType(JsonResult.ResultType.SUCCESS);
//            jsonResult.setMsg("申请成功");
//        }
//        else{
//            jsonResult.setType(JsonResult.ResultType.ERROR);
//            jsonResult.setMsg("申请失败");
//        }
//        return jsonResult;
//    }
//
//    /**
//     * 编辑申请的信息
//     */
//    @PostMapping("/upd")
//    @ResponseBody
////    @RequiresPermissions({"drive:toolsb:edit"})
//    public JsonResult edit(Integer tid){
//        JsonResult jsonResult = new JsonResult();
//        UnassignedTaskModel model=new UnassignedTaskModel();
//        model.setId(tid);
//        //已经申请
//        model.setIsApply(1);
//        //申请人
//        model.setCreateUser(ShiroUtils.getUser().getName());
//        //未下达
//        model.setIsAssigned(0);
//        Integer flg= unassignedTaskService.updUnassignedTask(model);
//        if(flg==1){
//            jsonResult.setType(JsonResult.ResultType.SUCCESS);
//            jsonResult.setMsg("申请成功");
//        }
//        else{
//            jsonResult.setType(JsonResult.ResultType.ERROR);
//            jsonResult.setMsg("申请失败");
//        }
//        return jsonResult;
//    }

    /**
     * 已经申请未下达项目列表
     * @param model
     * @return
     */
    @ResponseBody
    @PostMapping("/taskList")
    public JsonResult selectTaskList(UnassignedTaskModel model) {
        startPage();
        JsonResult jsonResult = new JsonResult();
        return jsonResult(unassignedTaskService.selectTaskList(model));
    }

//    /**
//     * 编辑驳回
//     */
//    @PostMapping("/turnDown")
//    @ResponseBody
//    public JsonResult turnDown(Integer tid){
//        JsonResult jsonResult = new JsonResult();
//        UnassignedTaskModel model=new UnassignedTaskModel();
//        model.setId(tid);
////        //已经申请
////        model.setIsApply(0);
////        //未下达
////        model.setIsAssigned(0);
//        Integer flg= unassignedTaskService.returnUnassignedTask(model);
//        if(flg==1){
//            jsonResult.setType(JsonResult.ResultType.SUCCESS);
//            jsonResult.setMsg("驳回成功");
//        }
//        else{
//            jsonResult.setType(JsonResult.ResultType.ERROR);
//            jsonResult.setMsg("驳回失败");
//        }
//        return jsonResult;
//    }

    /**
     * 商务任务下达
     *
     * @param ids 主键
     * @return json
     */
    @ResponseBody
    @PostMapping("/taskDown")
    public JsonResult intertTask(Integer[] ids,String param,Integer costId,Integer contractId,String code,String remark) {
        JsonResult jsonResult=new JsonResult();
       try {
           //首先循环选中的项目id
           for (int i = 0; i < ids.length; i++) {
               TaskModel task = new TaskModel();
               //外键：商务信息id
               /**
                * 先执行，下达表的插入。返回id，给task表。
                */
               UnassignedTaskModel umodel=new UnassignedTaskModel();
               umodel.setFkId(ids[i]);
               umodel.setCreateUser(ShiroUtils.getUser().getName());
               umodel.setAssignUser(ShiroUtils.getUser().getName());
               umodel.setIsApply(1);
               umodel.setIsAssigned(1);
               umodel.setIsDelete(0);
               umodel.setIsPoint(0);
               umodel.setIsExpedited(0);
               umodel.setCode(code);
               umodel.setRemark(remark);
               umodel.setKind(0);
               int utaskId=unassignedTaskService.addUnassignedTask(umodel);


               task.setFkId(umodel.getId());

               // 1#预算#需要1#1&2|2#报价#不需要0#|
               String[] sourceStrArray = param.split("\\:");
               for (int i2 = 0; i2 < sourceStrArray.length; i2++) {
                   String[] sourceStrArray3 = sourceStrArray[i2].split("\\#");
                   if (sourceStrArray3.length >= 3) {
                       task.setTname(sourceStrArray3[1]);
                       task.setTkind(parseInt(sourceStrArray3[0]));
                       task.setOrderNo(parseInt(sourceStrArray3[3]));
                       task.setIsNeed(parseInt(sourceStrArray3[2]));
                       if (sourceStrArray3.length >4) {
                           task.setAppoint(sourceStrArray3[4]);
                       }else{
                           task.setAppoint("");
                       }
                       /**
                        * 需不需要我都存储，这样便于编辑调整的时候，好显示。
                        */
                       //if(parseInt(sourceStrArray3[2])==1){
//                           if(task.getTkind()==1 || task.getTkind()==6 || task.getTkind()==7){
//                               //预核算成本组id
//                               task.setGroupId(costId);
//                           }else{
//                                //合同组id
//                               task.setGroupId(contractId);
//                           }
                       //}
                       //默认就是未开始
                       if(task.getTkind()==7 || task.getTkind()==1) {
                           /**
                            * 暂时概算和预算没开发呢，所以先都存储了3.
                            */
                           task.setTstatus(3);
                       }else{
                           task.setTstatus(1);
                       }
                       //代表是需要
                       int fkid = taskService.insertTask(task);
                   }
               }
               UnassignedTaskModel model=new UnassignedTaskModel();
//               model.setId(ids[i]);
               model.setId(umodel.getId());//改成先执行下达表的插入，将id返回来。2020.9.23
               //申请人
               model.setAssignUser(ShiroUtils.getUser().getName());
               //未下达
               model.setIsAssigned(1);
               Integer flg= unassignedTaskService.updUnassignedTask(model);
               if(flg==1){
                   jsonResult.setType(JsonResult.ResultType.SUCCESS);
                   jsonResult.setMsg("下达成功");
               }
               else{
                   jsonResult.setType(JsonResult.ResultType.ERROR);
                   jsonResult.setMsg("下达失败");
               }
           }
       }catch (Exception e){
           jsonResult.setType(JsonResult.ResultType.ERROR);
           jsonResult.setMsg("下达失败:"+e.getMessage());
       }
        //循环选择的项目组和商务任务，执行保存
        return jsonResult;
    }
    /**
     * 执行创建合同
     * @return
     */
    @ResponseBody
    @PostMapping("/updTaskData")
    public JsonResult updTaskData(TaskModel model) {
        JsonResult jsonResult = new JsonResult();
        try {
            unassignedTaskService.updTaskData(model);
            jsonResult.setType(JsonResult.ResultType.SUCCESS);
        }catch (Exception e){
            jsonResult.setType(JsonResult.ResultType.ERROR);
            jsonResult.setMsg("失败:"+e.getMessage());
        }
        return jsonResult;
    }
    /**
     * 查询任务节点的数据
     * @param model
     * @return
     */
    @ResponseBody
    @PostMapping("/selectTaskByFkId")
    public JsonResult selectTaskByFkId(TaskModel model){
        JsonResult jsonResult = new JsonResult();
         jsonResult.setData(taskService.selectTaskByFkId(model));
        return jsonResult;
    }
}
